home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 3032.ZIP / RLIB20.ZIP / RL_CLOSE.PRG < prev    next >
Text File  |  1989-02-18  |  2KB  |  37 lines

  1. * Function: CLOSEAREA
  2. * Author..: Richard Low
  3. * Syntax..: CLOSEAREA( [ <expN..C>, ... ] )
  4. * Returns.: True if requested work areas have been closed.  Notes the
  5. *           currently SELECTed work area and returns control there.
  6. *
  7.  
  8. FUNCTION CLOSEAREA
  9. PARAMETERS p_1, p_2, p_3, p_4, p_5, p_6, p_7, p_8, p_9
  10. PRIVATE f_numparms, f_cur_area, f_counter, f_parname, f_workarea
  11.  
  12. f_numparms = PCOUNT()                            && get number of parameters
  13. f_cur_area = SELECT()                            && save current work area
  14.  
  15. IF f_numparms = 0                                && if no parameters passed
  16.    USE                                           && close only current area
  17. ELSE
  18.    FOR f_counter = 1 TO f_numparms               && go thru each parameter
  19.       f_parname = 'p_' + STR(f_counter,1,0)      && build parameter name string
  20.       IF .NOT. TYPE(f_parname) $ 'NC'            && if parm is not number or character
  21.          SELECT (f_cur_area)                     && return to current area
  22.          RETURN (.F.)                            && bomb out
  23.       ENDIF
  24.       IF TYPE(f_parname) = 'N'                   && if parameter is numeric
  25.          f_workarea = &f_parname                 && reference area by number
  26.       ELSE                                       && parameter is character
  27.          f_workarea = SELECT(&f_parname)         && get number for alias
  28.          *-- if alias name is bad, it will SELECT 0, essentially doing nothing
  29.       ENDIF
  30.       SELECT (f_workarea)                        && select the work area
  31.       USE                                        && close the database
  32.    NEXT
  33. ENDIF
  34.  
  35. SELECT (f_cur_area)                              && return to current area
  36. RETURN (.T.)
  37.